package com.itheima.sh.controller;

import com.itheima.sh.clients.UserFeignApi;
import com.itheima.sh.pojo.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//Feign客户端

@RestController //该类注入到容器 并且返回值为json格式
@RequestMapping("feign") //声明访问的类路径
public class FeignController {

    //由于本类引用了api的依赖 所以 可以直接注入 容器中的 api的 生成代理类
    @Autowired
    UserFeignApi userFeignApi;

    @GetMapping("/{id}")//根据id查询
    @HystrixCommand(fallbackMethod ="qurryByIDFullBack" ) //当调用此方法降级后 会调用此注解指向的方法
    public User queryById(@PathVariable("id") String username) {
        return userFeignApi.queryByid(username);
    }

    //降级方法
    public User qurryByIDFullBack(String username){
        User user = new User();
        user.setName("-1 服务异常"); //模拟服务出现异常后的 友好页面
        System.out.println("===============服务异常================");
        return user;
    }
}
